// 搜索顺序一
//发现每行有且仅有一个皇后 利用全排列的思想去按行dfs
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int n;
vector<vector<char>> g;
// 不用 保存每一行的bool因为遍历顺序和回溯
// 上对角线从右上角->左上角，第i-j+n根
// 下对角线从左上角->右下角，第i+j根
unordered_map<int, bool> d1, d2, dj;
void dfs(int i)
{
    if (i == n)
    {
        for (auto &vt : g)
        {
            for (auto &e : vt)
                cout << e;
            cout << endl;
        }
        cout << endl;
        return;
    }
    for (int j = 0; j < n; j++)
    {
        if (!d1[i + j] && !d2[i - j + n] && !dj[j])
        {
            g[i][j] = 'Q';
            dj[j] = d1[i + j] = d2[i - j + n] = true;
            dfs(i + 1);
            g[i][j] = '.';
            dj[j] = d1[i + j] = d2[i - j + n] = false;
        }
    }
}
int main()
{
    cin >> n;
    g = vector(n, vector<char>(n));
    for (auto &vt : g)
    {
        for (auto &e : vt)
        {
            e = '.';
        }
    }
    dfs(0);
    return 0;
}
// 搜索顺序二 朴素的思想+减汁儿
#include <iostream>
using namespace std;
const int N = 10;
int n;
// 不用频繁new 节省很多时间
bool r[N], c[N], d1[N], d2[N];
char g[N][N];
void dfs(int x, int y, int s)
{
    // 减汁儿
    if (y == n)
    {
        if (s <= x)
            return;
        y = 0, x++;
    }
    if (x == n)
    {
        if (s == n)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    cout << g[i][j];
                }
                cout << endl;
            }
            cout << endl;
        }
        return;
    }
    // 不放
    dfs(x, y + 1, s);
    // 放
    if (!r[x] && !c[y] && !d1[x + y] && !d2[x - y + n])
    {
        g[x][y] = 'Q';
        r[x] = c[y] = d1[x + y] = d2[x - y + n] = true;
        dfs(x, y + 1, s + 1);
        g[x][y] = '.';
        r[x] = c[y] = d1[x + y] = d2[x - y + n] = false;
    }
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            g[i][j] = '.';
    }
    dfs(0, 0, 0);
    return 0;
}